struct point
{
	double x, y;

	point():
		x(0.0),
		y(0.0)
	{};

	point(double a, double b):
		x(a),
		y(b)
	{};

	bool operator ==(const point& p) const
	{
		return (x == p.x) && (y == p.y);
	};
};

struct circle
{
    std::vector<point> border;
    
    circle(const circle& c):
		border(c.border)
	{};

    circle(const std::vector<point>& bounds)
	{
		border = bounds;

		if (bounds.size() == 3)
		{
			double bc = hypot(border[1].x - border[2].x, border[1].y - border[2].y);
			double ac = hypot(border[0].x - border[2].x, border[0].y - border[2].y);
			double ab = hypot(border[0].x - border[1].x, border[0].y - border[1].y);

			if (bc + ac >= ab)
				border.erase(border.begin() + 2);
			else if (bc + ab >= ac)
				border.erase(border.begin() + 1);
			else if (ac + ab >= bc)
				border.erase(border.begin());
		}
	};
};